// scripts/svgGenerate.js
import fs from 'fs'
import path from 'path'
import { fileURLToPath } from 'url';

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

// 配置参数
const SVG_DIR = path.join(__dirname, '../src/assets/svg') // SVG 存放目录
const OUTPUT_FILE = path.join(SVG_DIR, 'index.ts') // 输出文件路径

function generateExports () {
    try {
        // 获取所有 SVG 文件名
        const svgFiles = fs.readdirSync(SVG_DIR)
            .filter(file => file.endsWith('.svg'))
            .map(file => file.replace('.svg', ''))
        const shouldExportsSvgName = []
        // 生成svg导出内容
        const exportsContent = svgFiles
            .map(file => {
                const componentName = `${file.replace(/^./, str => str.toUpperCase())}Svg`
                shouldExportsSvgName.push(componentName)
                return `import  ${componentName}  from './${file}.svg'`
            })
            .join('\n')
        const exportSVGSentence = `export {${shouldExportsSvgName.join(",")}}`


        const reactFiles = fs.readdirSync(SVG_DIR)
            .filter(file => file.endsWith('SvgFC.tsx'))
            .map(file => file.replace('.tsx', ''))
        // 生成react导出内容
        const exportsReactContent = reactFiles
            .map(file => `export * from './${file}'`)
            .join('\n')

        // 写入文件
        fs.writeFileSync(OUTPUT_FILE, `// Auto-generated by generate.js\n${exportsContent}\n\n${exportsReactContent}\n\n${exportSVGSentence}`)
        console.log('SVG exports generated successfully!')

    } catch (error) {
        console.error('Error generating SVG exports:', error)
    }
}

generateExports()

// 修改 generate.js 添加监听功能
// "gen:svg:watch": "node scripts/svg-exporter/generate.js --watch"
// const chokidar = require('chokidar')

// if (process.argv.includes('--watch')) {
//   console.log('Watching SVG directory...')
//   chokidar.watch(SVG_DIR).on('all', (event, path) => {
//     if (event === 'add' || event === 'unlink') {
//       generateExports()
//     }
//   })
// }

// 修改 generate.js 中的命名转换逻辑
// function formatComponentName(fileName) {
//     return fileName
//       .split('-')
//       .map(word => word[0].toUpperCase() + word.slice(1))
//       .join('') + 'Icon'
//   }


